﻿<style type="text/css">
<!--
.STYLE2 {
	font-size: x-large;
	color: #FF0000;
}
.STYLE3 {
	font-size: 36px;
	font-weight: bold;
}
.STYLE5 {
	color: #0000FF
}
.STYLE7 {font-size: 24px}
.STYLE9 {font-size: 18px; color: #FF0000; }
-->
</style>

<DIV>
<table width="574" border="0" bgcolor="#999999">
  <tr>
    <td width="191" height="38" align="center"><span class="STYLE2"><a href="/education/compiler?page=compiler1.htm">课程简介</a></span></td>
    <td width="191" align="center"><span class="STYLE2"><a href="/education/compiler?page=compiler2.htm">课程描述</a></span></td>
    <td width="191" align="center" class="STYLE2"><a href="/education/compiler?page=compiler3.htm">教学队伍</a></td>
  </tr>
  <tr>
    <td height="38" align="center" class="STYLE2"><a href="/education/compiler?page=compiler4.htm">教材建设</a></td>
    <td align="center" class="STYLE2"><a href="/education/compiler?page=compiler5.htm">教改成果</a></td>
    <td align="center" class="STYLE2"><a href="/education/compiler?page=compiler6.htm">课程教学</a></td>
  </tr>
  <tr>
    <td height="38" align="center" class="STYLE2"><a href="/education/compiler?page=compiler7.htm">实验课教学</a></td>
    <td align="center" class="STYLE2"><a href="/education/compiler?page=compiler8.htm">教学录像</a></td>
    <td align="center" class="STYLE2"><a href="/education/compiler?page=compiler9.htm">辅助工具</a></td>
  </tr>
</table>

<p>&nbsp;</p>
<p class="STYLE3">辅助工具：</p>
<blockquote>
  <p>&nbsp;</p>
  <p>　　编译器构造工具是指用来自动生成编译器模块的软件工具。编译器模块不仅是编译器重要组成部分，还常常以独立或组合的方式出现在其它软件系统中，如脚本执行系统，流程处理系统，软件测试系统，知识处理系统等，在这些不同领域的软件系统中，编译器模块都发挥了重要作用。手工设计编译器模块是一项非常繁重的工作，人们常常利用编译器构造工具自动生成编译器模块的实现代码。</p>
  <p><br>
　　
    任何编译器构造工具都是某种分析技术的工具化，按照编译程序前端和后端的划分，编译器构造工具也分为编译器前端和后端构造工具。众所周知，对编译前端（如：词法分析和语法分析器）的研究已有比较成熟的理论基础，实用的编译器前端构造工具也比较丰富，而对编译器后端的研究和应用需求仍存在很大的差距，相应的工具还无法得到广泛应用。现在比较成熟的编译器前端构造工具主要有词法分析器生成器和语法分析器生成器。  </p>
  <p><br>
　　
    这类工具根据一种基于正则表达式的词法描述自动生成词法分析器（也称扫描器）。本质上讲词法分析器生成器就是对有限自动机理论的工具化。词法分析器生成器的工作原理：先把词法模式从正则表达式形式转换成非确定有限自动机；然后把非确定有限自动机转换成确定有限自动机；再根据确定有限自动机生成转换表；在词法分析时，用确定有限自动机模拟器读取输入流中的字符，根据转换表进行模式的匹配，返回对应的模式标识并执行相应的动作。此方法结合确定有限自动机状态化简算法和转换表压缩技术，具有较好的时空效率。  </p>
  <p><br>
　　
    语法分析器生成器是一个指定某个格式中的一种语言的语法作为它的输入，并为该种语言产生分析过程以作为它的输出的程序，它生成的目标程序是语法分析器（也称分析器）。历史上，语法分析器生成器被称作编译－编译程序（Compiler-Compiler），这是由于按照规律可将所有的编译步骤作为包含在语法分析器中的动作来执行。现在观点是将语法分析器仅考虑为编译器的一个部分。</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <style>
  <!--
  img { border:none; }
  -->
  </style>
  <p><img src="/pub/compiler/4.jpg" width="22" height="26"> accent-0.8</p>
  <p>一种基于Earley算法的分析器生成器，可以支持上下文无关文法的全集。</p>
  <p>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<a href="http://softlab.jlu.edu.cn/temp/tools/accent-0.8.rar" target="_blank"><img src="/pub/compiler/5.jpg" width="85" height="27"></a></p>
  <p><img src="/pub/compiler/4.jpg" width="22" height="26">antlr-2.7.2</p>
  <p>一种基于LL(k)算法的编译器生成器，可生成Java.C#和C++三种代码。</p>
  <p>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<a href="http://softlab.jlu.edu.cn/temp/tools/antlr-2.7.2.rar" target="_blank"><img src="/pub/compiler/5.jpg" width="85" height="27"></a></p>
  <p><img src="/pub/compiler/4.jpg" width="22" height="26">bison-1.875</p>
  <p>Linux内置的LALR算法的分析器生成器，和Yacc兼容。</p>
  <p>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<a href="http://softlab.jlu.edu.cn/temp/tools/bison-1.875.rar" target="_blank"><img src="/pub/compiler/5.jpg" width="85" height="27"></a></p>
  <p><img src="/pub/compiler/4.jpg" width="22" height="26">Building Parsers with Java</p>
  <p>《Building Parsers with Java》 一书的配套程序。</p>
  <p>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<a href="http://softlab.jlu.edu.cn/temp/tools/Building%20Parsers%20with%20Java.rar" target="_blank"><img src="/pub/compiler/5.jpg" width="85" height="27"></a></p>
  <p><img src="/pub/compiler/4.jpg" width="22" height="26">cppcc-0.0.6</p>
  <p>一种基于LL(k)算法的编译器生成器，生成C++代码。</p>
  <p>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<a href="http://softlab.jlu.edu.cn/temp/tools/cppcc-0.0.6.rar" target="_blank"><img src="/pub/compiler/5.jpg" width="85" height="27"></a></p>
  <p><img src="/pub/compiler/4.jpg" width="22" height="26">elex-0.1</p>
  <p>一种支持多语言的分析器生成器。</p>
  <p>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<a href="http://softlab.jlu.edu.cn/temp/tools/elex-0.1.rar" target="_blank"><img src="/pub/compiler/5.jpg" width="85" height="27"></a></p>
  <p><img src="/pub/compiler/4.jpg" width="22" height="26">elsa-2003.08.16</p>
  <p>Elkhound是一个分析器生成器；Elsa是一个用Elkhound生成的C/C++分析器。</p>
  <p>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<a href="http://softlab.jlu.edu.cn/temp/tools/elsa-2003.08.16.rar" target="_blank"><img src="/pub/compiler/5.jpg" width="85" height="27"></a></p>
  <p><img src="/pub/compiler/4.jpg" width="22" height="26">flex-2.5.4</p>
  <p>Linux内置的词法分析器生成器。</p>
  <p>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<a href="http://softlab.jlu.edu.cn/temp/tools/flex-2.5.4.rar" target="_blank"><img src="/pub/compiler/5.jpg" width="85" height="27"></a></p>
  <p><img src="/pub/compiler/4.jpg" width="22" height="26">gentle-97</p>
  <p>一个通用的编译器构造系统。</p>
  <p>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<a href="http://softlab.jlu.edu.cn/temp/tools/gentle-97.rar" target="_blank"><img src="/pub/compiler/5.jpg" width="85" height="27"></a></p>
  <p><img src="/pub/compiler/4.jpg" width="22" height="26">java-cup-v10k</p>
  <p>一种基于LALR算法的分析器生成器，生成Java代码。</p>
  <p>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<a href="http://softlab.jlu.edu.cn/temp/tools/java_cup_v10k.rar" target="_blank"><img src="/pub/compiler/5.jpg" width="85" height="27"></a></p>
  <p><img src="/pub/compiler/4.jpg" width="22" height="26">JLex</p>
  <p>一种词法分析器生成器，生成Java代码。</p>
  <p>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<a href="http://softlab.jlu.edu.cn/temp/tools/JLex.rar" target="_blank"><img src="/pub/compiler/5.jpg" width="85" height="27"></a></p>
  <p><img src="/pub/compiler/4.jpg" width="22" height="26">lcc</p>
  <p>一种可扩展目标机的标准C的编译器代码。</p>
  <p>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<a href="http://softlab.jlu.edu.cn/temp/tools/lcc.rar" target="_blank"><img src="/pub/compiler/5.jpg" width="85" height="27"></a></p>
  <p><img src="/pub/compiler/4.jpg" width="22" height="26">LLgen</p>
  <p>一种基于扩展LL(k)算法的分析器生成器。</p>
  <p>	　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<a href="http://softlab.jlu.edu.cn/temp/tools/LLgen.rar" target="_blank"><img src="/pub/compiler/5.jpg" width="85" height="27"></a></p>
  <p><img src="/pub/compiler/4.jpg" width="22" height="26"> oolex</p>
  <p>一种面向对象的词法分析器。</p>
  <p>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<a href="http://softlab.jlu.edu.cn/temp/tools/oolex.rar" target="_blank"><img src="/pub/compiler/5.jpg" width="85" height="27"></a></p>
  <p><img src="/pub/compiler/4.jpg" width="22" height="26">sablecc-2.18.0</p>
  <p>一种基于LALR算法的编译生成器，生成Java代码。</p>
  <p>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<a href="http://softlab.jlu.edu.cn/temp/tools/sablecc-2.18.0.rar" target="_blank"><img src="/pub/compiler/5.jpg" width="85" height="27"></a></p>
  <p><img src="/pub/compiler/4.jpg" width="22" height="26">source_lolo</p>
  <p>一种面向对象的词法分析器。</p>
  <p>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<a href="http://softlab.jlu.edu.cn/temp/tools/source_lolo.rar" target="_blank"><img src="/pub/compiler/5.jpg" width="85" height="27"></a></p>
  <p><img src="/pub/compiler/4.jpg" width="22" height="26">yacc压缩</p>
  <p>一种基于LALR算法的分析器生成器。<br>
  </p>
  <p>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<a href="http://softlab.jlu.edu.cn/temp/tools/yacc.rar" target="_blank"><img src="/pub/compiler/5.jpg" width="85" height="27"></a></p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
</blockquote>
</DIV>
